﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using NHibernate;
using NHibernate.Cfg;


/// <summary>
/// Code-Behind de la pagina ReporteTotFacCob.aspx donde
/// se implementa todas las funciones y procedimientos.
/// </summary>
    public partial class MasterPage2 : System.Web.UI.Page
    {
        FacturaControl control = new FacturaControl();

        protected void Page_Load(object sender, EventArgs e)
        {

        }
        private string m_Titulo;
        public string Titulo
        {
            get
            {
                return m_Titulo;
            }
            set
            {
                m_Titulo = value;                
            }
        }

        /// <summary>
        /// Procedimiento encargado de verificar que la pagina a
        /// pasado los procesos de validacion de las herramientas
        /// RequiredValidator y RangeValidator en la pagina, y 
        /// luego procede a llamar a el procedimiento consultar()
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void validar(object sender, EventArgs e)
        {
            if (this.Page.IsValid)
                consultar();
        }

        /// <summary>
        /// Procedimiento encargado de obtener el año introducido a consultar
        /// para luego proceder a llamar a la funcion BuscarFacturasAnoEstado, pasandole
        /// dicho año de consulta y el parametro "cancelada". El resultado es la devolucion de una lista
        /// con la informacion de la solicitud.
        /// 
        /// Verifica si existen datos en la lista, de no ser asi procede a 
        /// limpiar el gridview y le asigna el mensaje No existen facuras 
        /// cobradas para este año, sino, procede a crear las columnas del 
        /// gridview y s ele pasa el flujo de datos (lista) paramostrar en 
        /// pantalla y se habilita y da la visibilidad al boton de exportar el
        /// reporte.
        /// </summary>
        protected void consultar()
        {
            string año = this.Date3.Text;
            IList fac = control.BuscarFacturasAnoEstado(año, "cobrada");            
            int totalrow = fac.Count;
            if (totalrow == 0)
            {
                this.GridView1.Columns.Clear();
                this.GridView1.EmptyDataText = "No existen Facturas Cobradas para este Año";
                this.GridView1.Caption = "Reporte de Facturas Cobradas en el " + año;
                this.GridView1.DataSource = fac;
                this.GridView1.DataBind();
                this.Button1.Enabled = true;
                this.Button1.Visible = true;
            }
            else
            {
                this.GridView1.Columns.Clear();
                BoundField numero = new BoundField();
                BoundField fecha = new BoundField();
                BoundField titulo = new BoundField();
                BoundField monto = new BoundField();
                BoundField estado = new BoundField();
                numero.DataField = "Numero";
                numero.HeaderText = "NUMERO";
                fecha.DataField = "Fecha";
                fecha.HeaderText = "FECHA";
                titulo.DataField = "Titulo";
                titulo.HeaderText = "TITULO";
                titulo.FooterText = "TOTAL DE FACTURAS: ";
                titulo.FooterStyle.HorizontalAlign = HorizontalAlign.Right;
                monto.DataField = "Monto";
                monto.HeaderText = "MONTO";
                monto.FooterText = Convert.ToString(totalrow);
                monto.FooterStyle.HorizontalAlign = HorizontalAlign.Left;                
                this.GridView1.Columns.Add(numero);
                this.GridView1.Columns.Add(fecha);
                this.GridView1.Columns.Add(titulo);
                this.GridView1.Columns.Add(monto);                
                this.GridView1.Caption = "Reporte de Facturas Cobradas en el " + año;
                this.GridView1.DataSource = fac;
                this.GridView1.DataBind();
                this.Button1.Enabled = true;
                this.Button1.Visible = true;
            }
        }

      /// <summary>
      /// Controla la paginación del GridView
      /// </summary>
      /// <returns>void</returns>

        protected void CambioPagina(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            this.consultar();
        }
          

        /// <summary>
        /// Procedimiento encargado de llamar al metodo para exportar el reporte
        /// del gridview a un archivo csv al presionar el boton Exportar CSV
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void exportar(object sender, EventArgs e)
        {
                ExportarReporte exporto = new ExportarReporte();
                exporto.ExportarCsv(GridView1, "TotalFacturasCobradas" + this.Date3.Text, this.Page);

        }

}


